package com.jxnu.escms.Service.UserService;

import com.jxnu.escms.Pojo.PageResult;
import com.jxnu.escms.Pojo.User;

import java.util.List;
import java.util.Map;

public interface UserService {

    /**
     * 通过用户名和密码判断是否存在用户
     * @param username 用户名
     * @param password 密码
     * @return 存在则返回当前用户
     */
    public User containUserByNameAndPassword(String username, String password);

    /**
     * 通过邮箱和密码判断是否存在用户
     * @param email ： 邮箱
     * @param password 密码
     * @return 存在则返回用户
     */
    public User containUserByEmailAndPassword(String email, String password);

    /**
     * 通过用户名和邮箱判断是否存在用户（注册用户时用, 找回密码时也可用）
     * @param username
     * @param email
     * @return
     */
    public User containUserByNameAndEmail(String username, String email);

    /**
     * 用户登录成功时，记录登陆时间
     * @param timestamp
     * @return
     */
    public int updateDate(String timestamp, Integer id);

    /**
     * 通过email，用户名，密码注册
     * @param input
     * @return
     */
    public int registerUser(Map<String, String> input);

    /**
     * 更改密码
     * @param newPassword
     * @param id
     * @return
     */
    public int updatePassword(String newPassword, Integer id);

    /**
     * 通过用户名和密码修改密码
     * @param name
     * @param email
     * @param newPassword
     * @return
     */
    public int changePassword(String name, String email, String newPassword);

    /**
     * 获取用户地址
     * @param id
     * @return
     */
    public Map<String, Object> getUserAddress(Integer id);

    /**
     * 通过用户id获取用户信息
     * @param id
     * @return
     */
    public User getUserByID(int id);

    public int changeUserMes(User user);

    public int updateUserAddress(List address, int id);

    /**
     * 得到所有用户信息
     */
    public PageResult<User> getUsers(Integer start, Integer pageSize);

    public String getUserHealthyCode(int id);

    /**
     * 管理员管理用户数据，对其（增删改）
     * @param admin
     * @param user
     * @param controlType
     * @return
     */
    public int userCharge(int admin, int user, String controlType);

    /**
     * 更新用户的账号名，姓名，性别，年龄，状态，健康码，风险等级
     * @param user
     * @return
     */
    public int updateUser(User user);

    public User getUserByAAndN(String account, String realName);

    public int addUser(User user);

    public  Map containCom(String name);

    public int insertCom(String name);

    public int addAddress(int user_id, int com_id, String build, String nuit, String door);

    /**
     * 得到所有的高危用户
     * @param start
     * @param pageSize
     * @return
     */
    public PageResult<User> getDangerUsers(Integer start, Integer pageSize);
}
